关于linux:AWK比较两个单独文件中的两列 |
您所在的位置:网站首页 › awk 比较大小 › 关于linux:AWK比较两个单独文件中的两列 |
我想比较两个文件并执行以下操作:如果第一个文件中的第5列等于第二个文件中的第5列,我想从第一个文件中打印整行。 那可能吗? 我搜索了问题,但找不到解决方案:( 这些文件由制表符分隔,我尝试了如下操作: 1zcat file1.txt.gz file2.txt.gz | awk -F'\t' 'NR==FNR{a[$5];next}$5 in a {print $0}'是否有人尝试做类似的事情? :) 在此先感谢您的帮助! 相关讨论 请提供一个最小的可复制示例! 这些字段必须在同一行吗? 您能否给出输入文件和期望输出的简短示例? 使用zcat不可能将file1与file2分开-您只有一行流,并且NR==FNR始终为true。您的脚本很好,但是您需要将每个文件分别以相反的顺序提供给awk。 12345678910111213$ cat file1.txt a b c d 100 x y z w 200 p q r s 300 1 2 3 4 400 $ cat file2.txt . . . . 200 . . . . 400 $ awk 'NR==FNR{a[$5];next} $5 in a {print $0}' file2.txt file1.txt x y z w 200 1 2 3 4 400编辑: 正如评论中指出的那样,可以改进上述通用解决方案,并针对OP从压缩的制表符分隔文件开始的情况进行定制: 123$ awk -F'\t' 'NR==FNR{a[$5];next} $5 in a' |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |